/* 
 * File:   aluno.c
 * Author: Vagner Clementino
 *
 * Created on 11 de Março de 2012, 10:46
 */

#include <stdlib.h>
#include <stdio.h>
#include "aluno.h"
#include "in_out.h"


Aluno* cria_aluno(int id_aluno, int* dados, int tam_lista_pref){
    
    Aluno* p = NULL;
     p = (Aluno*) malloc(sizeof(Aluno));
    if(p == NULL){
        /*Erro na alocar o espaço*/
        printf("Erro em alocar memoria para a estrutura aluno.\n");
        exit(-4);
    }else{
        p->id = id_aluno;
        p->nota = dados[0];
        p->tam_lista_pref = tam_lista_pref;
        p->lista_preferencia = (int*) malloc(tam_lista_pref*sizeof(int));
        if(p->lista_preferencia == NULL){
            fprintf(stderr,"Erro na alocacao de memoria\n");
            exit(-1);
        }
        copia_vetores(dados,&(p->lista_preferencia),1,tam_lista_pref+1);        
        p->ultima_universidade = -1;
        return p;
    } 
}

void desaloca_aluno(Aluno* p){
    free(p);
}

void define_lista_preferencia(Aluno** p, int* lista_pref)
{
    int i;
    for(i=0;i<(*p)->tam_lista_pref;i++){
        (*p)->lista_preferencia[i] = lista_pref[i];
    }
}
void imprime_aluno(const Aluno* a){
    int i;
    printf("ID Aluno: %d\n", a->id);
    printf("Nota Aluno: %d\n",a->nota);
    printf("Tamanho lista de preferencia: %d\n",a->tam_lista_pref);
    printf("Lista de preferencia: ");
    for(i=0;i<a->tam_lista_pref;i++){
        printf("%d ",a->lista_preferencia[i]);
    }
    printf("\n");
    printf("Ultima universidade: %d\n",a->ultima_universidade);  
}

int retorna_universidade(Aluno* p){
    
   if( p == NULL){        
       printf("ERRO: Aluno = NULL;");
       exit(-1);
        }else{            
            (p->ultima_universidade)++;
            
            if(p->ultima_universidade == p->tam_lista_pref){
                return (-1);
            }else{
                return(p->lista_preferencia[p->ultima_universidade]);
            }           
        }
        return (-1);
    }      

int grau_de_preferencia(Aluno* p, int id_universidade){
    
    int i = 0;
    if(p == NULL){
        return -1;
    }
    while(i < p->tam_lista_pref){
        if(p->lista_preferencia[i] == id_universidade){
            return i;
        }
        i++;
    }
    return -1;
}